package newapp.dob.com.dc_new_app.util;

import android.content.Context;
import android.content.res.Resources;
import android.os.Build;
import android.telephony.TelephonyManager;
import android.text.TextUtils;
import android.util.DisplayMetrics;
import android.util.TypedValue;

/**
 * 在sdk初始化时通过 ApplicationContext 获取的一些设备相关信息， 这些值在这个application的生命周期内不会改变
 */
public class Device {

    public static final boolean isEmulator = Build.MODEL.equals("sdk") || Build.MODEL.equals("google_sdk");
	public static final DisplayMetrics dm = Resources.getSystem().getDisplayMetrics();

	public static String IMEI;
	public static String IMSI;
	public static String telecomId = "tel"; // cmcc,cnc,tel
    public static String phone;

    public static String deviceId;



	public static int dp2px(float dp) {
        return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dp, dm);
		//return (int) (dp * dm.density + 0.5f);
	}
	public static int px2dp(float px) {
		return (int) (px / dm.density + 0.5f);
	}
	public static int sp2px(float sp) {
		return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, sp, dm);
	}
	public static int px2sp(float px) {
		return (int) (px / dm.scaledDensity + 0.5f);
	}

	public static void init(Context context) {
        checkTelecomInfo(context);
		checkTelecomId();
//		checkDeviceId();
	}

    /** 需要权限 android.permission.READ_PHONE_STATE */
    private static void checkTelecomInfo(Context context) {
        try {
            TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
            IMEI = tm.getDeviceId();
            IMSI = tm.getSubscriberId();
            phone = tm.getLine1Number();
            if (!TextUtils.isEmpty(phone) && phone.startsWith("+86")) {
                phone = phone.substring(3);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

	private static void checkTelecomId() {
		if (IMSI == null) {
			return;
		}
		// IMSI号前面3位460是国家，紧接着后面2位00 02是中国移动，01是中国联通，03是中国电信。
		if (IMSI.startsWith("46000") || IMSI.startsWith("46002")) {
			telecomId = "cmcc";
		} else if (IMSI.startsWith("46001")) {
			telecomId = "cnc";
		} else if (IMSI.startsWith("46003")) {
			telecomId = "tel";
		}
	}

//	private static void checkDeviceId() {
//
//		if (!TextUtils.isEmpty(IMEI)) {
//			deviceId = IMEI;
//		} else if (!TextUtils.isEmpty(IMSI)) {
//			deviceId = IMSI;
//		}
//
//		// read device id from file
//        String dir = Environment.getExternalStorageDirectory().getAbsolutePath() + File.separator + ".ezy";
//        FileUtil.ensureDir(dir);
//		File file = new File(dir, "DeviceId");
//		if (file.exists()) {
//            deviceId = FileUtil.readString(file.getAbsolutePath());
//		}
//		if (!TextUtils.isEmpty(deviceId)) {
//			return;
//		}
//		// generate device id
//		deviceId = UUID.randomUUID().toString();
//		if (file.exists()) {
//			file.delete();
//		}
//
//        // save device id to file
//        try {
//            file.createNewFile();
//            FileUtil.writeString(file.getAbsolutePath(), deviceId);
//        } catch (IOException e) {
//            e.printStackTrace();
//        }
//	}


}
